package com.softer.chengxin.userinfo.controller;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.common.enums.ResultEnum;
import com.softer.chengxin.userinfo.entity.UserInfo;
import com.softer.chengxin.userinfo.service.UserInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Map;

/**
 * @author Gong Zhiyang
 * @date 2018/10/13
 */
@RestController
@RequestMapping("/api/UserInfo")
public class UserInfoController {
    @Autowired
    private UserInfoService userInfoService;
    @RequestMapping("/getLoginNameRole")
    public Map<String,String> getLoginNameRole(HttpSession session){
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isEmpty(loginName)) {
            return null;
        }
        return userInfoService.getLoginNameRole(loginName);
    }

    /**
     * 删除管理用户
     *
     * @param id 用户Id
     * @return 处理结果
     */
    @PostMapping("/delete")
    public CommonResult deleteUserInfo(String id) {
        return userInfoService.deleteUserInfo(id);
    }

    /**
     * 新增管理用户
     *
     * @param userInfo 用户信息
     * @param session  缓存信息
     * @return 处理结果
     */
    @PostMapping("/addUser")
    public CommonResult addUserInfo(UserInfo userInfo, HttpSession session) {
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isEmpty(loginName)) {
            return new CommonResult(ResultEnum.FAIL.getCode(), "获取登陆用户失败");
        }

        return userInfoService.addUserInfo(userInfo, loginName);
    }

    /**
     * 获取用户信息
     *
     * @param id 用户id
     * @return 用户信息
     */
    @PostMapping("/getUserInfoById")
    public UserInfo getUserInfoById(Integer id) {
        return userInfoService.getUserInfoById(id);
    }

    /**
     * 编辑用户信息
     *
     * @param userInfo 用户信息
     * @return 处理结果
     */
    @PostMapping("/updateUser")
    public CommonResult updateUserInfo(UserInfo userInfo, HttpSession session) {
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        if (StringUtils.isEmpty(loginName)) {
            return new CommonResult(ResultEnum.FAIL.getCode(), "请重新登陆后操作");
        }
        return userInfoService.updateUserInfo(userInfo, loginName);
    }

    /**
     * 检验用户名是否存在
     *
     * @param userName 用户名
     * @return （2：用户名存在，1，用户名不存在）
     */
    @PostMapping("/checkUserName")
    public int checkUserName(String userName) {
        return userInfoService.checkUserName(userName);
    }

    /**
     * 加载登陆用户创建的用户列表
     *
     * @param page    页面信息
     * @param session 缓存信息
     * @return 用户列表
     */
    @PostMapping("/load")
    public ManagerPageResult load(Page page, HttpSession session) {
        // 登陆名
        String loginName = (String) session.getAttribute("loginName");
        return userInfoService.load(page, loginName);
    }

}
